TIPTOP ERP 用户密码修改 |
您所在的位置:网站首页 › 牛散 张婷 › TIPTOP ERP 用户密码修改 |
由于TIPTOP ERP 用户更改口令不是很方便,所以写了个程序用来更改用户口令 ( 好东西总是要共享的嘛 以前的修改界面如下:【输入的内容是看不到的,造成用户有时候不知所措 运行p_pw界面及操作如下: 程序信息如下:(per文件与4gl文件) ********************************************************************************************************************* 程序编号: p_pw.4gl 程序说明:TIPTOP ERP用户密码修改 程序所在目录 4gl文件:/u1/topprod/topcust/czz/4gl/p_pw.4gl per文件:/u1/topprod/topcust/czz/per/p_pw.per *********************************************************************************************************************.per文件 SCHEMA FORMONLY LAYOUT VBOX FOLDER PAGE page01 (TEXT="Main") GRID { username [username ][name ] Oldpassword [old ] Newpassword [new ] REPassword [renew ] } END --GRID END --PAGE END --FOLDER END --VBOX END --LAYOUT ATTRIBUTES username = FORMONLY.username,NOENTRY; name = FORMONLY.name,NOENTRY; old = FORMONLY.old; new = FORMONLY.new; renew = FORMONLY.renew; END.4gl文件 # Prog. Version..: '3.10.02-06.08.23(00005)' # # Pattern name...: p_pw.4gl # Descriptions...: 可视化界面修改用户密码 # Date & Author..: 2012/09/26 By XXXX DATABASE ds GLOBALS "../../config/top.global" DEFINE p_row,p_col SMALLINT, g_oldpwd VARCHAR(50), g_newpwd VARCHAR(50), g_repwd VARCHAR(50), g_zx02 LIKE zx_file.zx02 MAIN OPTIONS #改变一些系统预设值 FORM LINE FIRST + 2, #画面开始的位置 MESSAGE LINE LAST, #讯息显示的位置 PROMPT LINE LAST, #提示讯息的位置 INPUT NO WRAP #输入的方式: 不打转 DEFER INTERRUPT #撷取中断键, 由程式处理 IF (NOT cl_user()) THEN EXIT PROGRAM END IF WHENEVER ERROR CALL cl_err_msg_log IF (NOT cl_setup("CZZ")) THEN EXIT PROGRAM END IF LET p_row = ARG_VAL(1) LET p_col = ARG_VAL(2) CALL cl_used(g_prog,g_time,1) RETURNING g_time #No:MOD-580088 HCN 20050818 #No.FUN-6A0081 OPEN WINDOW p_pw_w AT p_row,p_col WITH FORM "czz/42f/p_pw" ATTRIBUTE (STYLE="chpw", TEXT="chpw") #No:FUN-580092 HCN CALL cl_ui_init() LET g_action_choice = "" ##显示用户账号和姓名******************************************* SELECT zx02 INTO g_zx02 FROM zx_file WHERE zx01=g_user IF (SQLCA.SQLCODE) THEN DISPLAY g_user CLIPPED," has no data in zx_file." RETURN FALSE END IF DISPLAY g_user TO FORMONLY.username ATTRIBUTE(REVERSE,BOLD,GREEN) DISPLAY g_zx02 TO FORMONLY.name ATTRIBUTE(REVERSE,BOLD,GREEN) ##END********************************************************** CALL p_pw_i() CALL p_pw_menu() CLOSE WINDOW p_pw_w CALL cl_used(g_prog,g_time,2) RETURNING g_time #No:MOD-580088 HCN 20050818 #No.FUN-6A0081 END MAIN FUNCTION p_pw_menu() MENU "" BEFORE MENU ON ACTION pwd CALL p_pw_modify() ON ACTION exit LET g_action_choice = "exit" EXIT MENU ON ACTION controlg CALL cl_cmdask() ON IDLE g_idle_seconds CALL cl_on_idle() CONTINUE MENU COMMAND KEY(INTERRUPT) LET INT_FLAG=FALSE LET g_action_choice = "exit" EXIT MENU END MENU END FUNCTION FUNCTION p_pw_i() INPUT g_oldpwd,g_newpwd,g_repwd FROM old,new,renew BEFORE INPUT CALL cl_set_comp_entry("old,new,renew",TRUE) AFTER FIELD renew IF g_repwd g_newpwd THEN CALL cl_err('','czz-101',1) NEXT FIELD new END IF ON ACTION CANCEL LET g_action_choice = "exit" CALL cl_set_act_visible("pwd", FALSE) EXIT INPUT END INPUT IF INT_FLAG THEN LET INT_FLAG = 0 CLOSE WINDOW p_pw_w CALL cl_used(g_prog,g_time,2) RETURNING g_time EXIT PROGRAM END IF END FUNCTION FUNCTION p_pw_modify() DEFINE l_script STRING, l_execute STRING, l_return STRING DEFINE ch base.Channel, l_status SMALLINT, l_index SMALLINT, l_temp STRING, l_text STRING RUN "rm -rf /u1/topprod/tiptop/azz/4gl/pwd" RUN "rm -rf /u1/topprod/tiptop/azz/4gl/pwd.log" LET l_script = '#!usr/bin/expect ','\n', ' set old [lindex $argv 0]','\n', ' set new [lindex $argv 1]','\n', ' spawn passwd ','\n', ' expect "password:" ','\n', ' send "$old\\r" ','\n', ' sleep 1','\n', ' expect "password:"','\n', ' send "$new\\r" ','\n', ' sleep 1 ','\n', ' expect "password:"','\n', ' send "$new\\r" ','\n', ' expect eof','\n', ' exit' RUN "echo '"||l_script||"' > /u1/topprod/tiptop/azz/4gl/pwd" RUN "chmod 777 /u1/topprod/tiptop/azz/4gl/pwd" RUN "chmod 777 /u1/topprod/tiptop/azz/4gl/pwd.log" LET l_execute = "expect /u1/topprod/tiptop/azz/4gl/pwd ",g_oldpwd," ",g_newpwd," > /u1/topprod/tiptop/azz/4gl/pwd.log" RUN l_execute SLEEP 2 LET ch = base.Channel.create() CALL ch.openFile('/u1/topprod/tiptop/azz/4gl/pwd.log','r') LET l_status = ch.read(l_temp) WHILE l_status LET l_text = l_text.trim(),l_temp.trim() LET l_status = ch.read(l_temp) END WHILE LET l_index = 0 LET l_index = l_text.getIndexOf('successfully',1) IF l_index > 0 THEN CALL cl_err('successfully','!',1) EXIT PROGRAM ELSE LET l_index = l_text.getIndexOf('Authentication token manipulation error',1) IF l_index > 0 THEN CALL cl_err('','czz-102',1) #认证令牌操作错误 ELSE LET l_index = l_text.getIndexOf('too short',1) IF l_index > 0 THEN CALL cl_err('','czz-103',1) #新输入的密码太短 ELSE LET l_index = l_text.getIndexOf('Password unchanged',1) IF l_index > 0 THEN CALL cl_err('','czz-108',1) #密码未改变 ELSE LET l_index = l_text.getIndexOf('too similar to the old',1) IF l_index > 0 THEN CALL cl_err('','czz-107',1) #新密码与旧密码太相似了 ELSE LET l_index = l_text.getIndexOf('not contain enough DIFFERENT characters',1) IF l_index > 0 THEN CALL cl_err('','czz-104',1) #密码不包含足够的不同字符 ELSE LET l_index = l_text.getIndexOf('too simplistic',1) IF l_index > 0 THEN CALL cl_err('','czz-105',1) #新密码太过简单化 ELSE LET l_index = l_text.getIndexOf('based on a dictionary word',1) IF l_index > 0 THEN CALL cl_err('','czz-106',1) #新密码包含了基于字典中的单词 ELSE CALL cl_err(l_text,'!',1) END IF END IF END IF END IF END IF END IF END IF #CALL cl_err(l_text,'!',1) CALL p_pw_i() IF g_action_choice = "exit" THEN CALL cl_set_act_visible("pwd", FALSE) END IF CALL p_pw_menu() IF INT_FLAG OR g_action_choice = "exit" THEN EXIT PROGRAM END IF END IF END FUNCTION
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |